<?php

namespace app\admin\controller;
use OSS\Credentials\StaticCredentialsProvider;
use OSS\OssClient;
use OSS\Core\OssException;

use app\BaseController;

class Common extends BaseController
{

    public $oss_clientObj = null;

    public function oss_init()
    {
        try {
            // 从环境变量中获取访问凭证,并保存在provider中。运行本代码示例之前，请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
            // 获取AK和SK信息
            $accessKeyId = 'LTAI5tEmLWwpwkpQJaCt6Ch9';
            $accessKeySecret = 'mumpni0HjSR7ia19xRXv1NnlaH5vdP';
            $provider = new StaticCredentialsProvider($accessKeyId,$accessKeySecret);
            // 填写Bucket所在地域对应的Endpoint。以华东1（杭州）为例，Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
            $endpoint = "https://oss-cn-chengdu.aliyuncs.com";
            $config = array(
                "provider" => $provider,
                "endpoint" => $endpoint,
                "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
                "region"=> "cn-chengdu",
            );
            $this->oss_clientObj = new OssClient($config);

        } catch (OssException $e) {
            printf($e->getMessage() . "\n");
            return;
        }
    }

    /**
     * 上传文件
     * 2025 03 04
     * Administrator
     * @return \think\response\Json
     */
    public function upload_file(){

//        初始化oss对象
        $this->oss_init();
        // 获取表单上传文件 例如上传了001.jpg
        $file = $this->request->file('img');
        // 上传到本地服务器
        $file_path = \think\facade\Filesystem::disk('public')->putFile('common', $file);
        $arr = explode("/", $file_path);
        $file_type = explode(".", $arr[count($arr) - 1])[1];
        $file_name = $arr[count($arr) - 1];
        $fill_file_path = root_path().'/public/storage/'.$file_path;
        // 填写Bucket名称，例如examplebucket。
        $bucket= "mengqu-zhou";
        // 填写Object完整路径，例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。
        $object = "img/".$file_name;

        $this->oss_clientObj->uploadFile($bucket, $object, $fill_file_path);

        if($file_type=='png'){
            $file_type = 'img/';
        }elseif($file_type=='jpg') {
            $file_type = 'img/';
        }elseif($file_type=='mp4'){
            $file_type = 'video/';
        }
        // oss路径
        $fill_oss_path = 'https://mengqu-zhou.oss-cn-chengdu.aliyuncs.com/'.$file_type.$file_name;

        return show(config('common.http_status.success'), 'ok',$fill_oss_path);
    }

    /**
     * 删除文件
     * 2025 03 04
     * Administrator
     * @return \think\response\Json
     */
    public function del_file(){
        //需要删除的文件名
        $del_file_name = $this->request->param('del_file_name', '', 'trim');

        // 填写Bucket名称，例如examplebucket。
        $bucket= "mengqu-zhou";
        // 填写Object完整路径，例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。
        $object = "test/test.png";

        $this->oss_clientObj->deleteObject($bucket, $object);


        return show(config('common.http_status.success'), 'ok');
    }


}